home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / AfterDark / TwilightZone ƒ / source / DimmerWindow.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-18  |  3.8 KB  |  178 lines  |  [TEXT/KAHL]

  1. /*-------------------------------------------------------------------------------------
  2.  *
  3.  * Simple Sample Application Framework
  4.  *
  5.  * ©1991 Apple Computer
  6.  *
  7.  -------------------------------------------------------------------------------------*/
  8. /*
  9.  * DimmerWindow.c -- window class instantiation/dispatching
  10.  *
  11.  * change history:
  12.  *
  13.  * SJF        11/7/91        1.0d1        initial coding
  14.  *
  15.  */
  16.  
  17. #include "const.h"
  18. #include "strconst.h"
  19. #include "mytypes.h"
  20. #include "globals.h"
  21. #include "utils.h"
  22. #include "windowstuff.h"
  23. #include "twilight.h"
  24. #include "grafstuff.h"
  25.  
  26. #include "dimmer.window.h"
  27. #include "base.window.h"
  28.  
  29. extern MonitorsInfoPtr gMonitorsInfoPtr;
  30.  
  31. /* instantiate a new dimmer window */
  32.  
  33. WindowPtr DimmerMakeWindow(Rect *wRect,StringPtr title,Boolean visible,short wdefProc,Boolean goAwayFlag)
  34. {
  35.     TInfoHndl infoHndl;
  36.     TInfoPtr infoPtr;
  37.     WindowPtr theWindow;
  38.     Str255 defaultTitle;
  39.     
  40.     theWindow = BaseMakeWindow(wRect,title,visible,wdefProc,goAwayFlag);
  41.     
  42.     infoHndl = (TInfoHndl)GetWRefCon(theWindow);
  43.     MoveHHi((Handle)infoHndl);
  44.     HLock((Handle)infoHndl);
  45.     infoPtr = *infoHndl;
  46.     
  47.     infoPtr->m_idle = DimmerIdleWindow;
  48. //    infoPtr->m_fixCursor = DimmerFixCursorWindow;
  49. //    infoPtr->m_activate = DimmerActivateWindow;
  50. //    infoPtr->m_deactivate = DimmerDeactivateWindow;
  51.     infoPtr->m_update = DimmerUpdateWindow;
  52. //    infoPtr->m_key = DimmerKeyWindow;
  53. //    infoPtr->m_resize = DimmerResizeWindow;
  54. //    infoPtr->m_click = DimmerClickWindow;
  55.     infoPtr->m_destroy = DimmerDestroyWindow;
  56. //    infoPtr->m_undo = DimmerUndoWindow;
  57. //    infoPtr->m_cut = DimmerCutWindow;
  58. //    infoPtr->m_copy = DimmerCopyWindow;
  59. //    infoPtr->m_paste = DimmerPasteWindow;
  60. //    infoPtr->m_clear = DimmerClearWindow;
  61. //    infoPtr->m_print = DimmerPrintWindow;
  62. //    infoPtr->m_pageSetup = DimmerPageSetupWindow;
  63. //    infoPtr->m_save = DimmerSaveWindow;
  64.     infoPtr->m_load = DimmerLoadWindow;
  65. //    infoPtr->m_event = DimmerEventWindow;
  66.  
  67.     infoPtr->saved = true;
  68.     infoPtr->changed = false;
  69.     infoPtr->otherData[0] = nil;
  70.     
  71.     ((WindowPeek)theWindow)->windowKind = kDimmerWindow;
  72.     HUnlock((Handle)infoHndl);
  73.     
  74.     return theWindow;
  75. }
  76.  
  77.  
  78. void *DimmerDestroyWindow(WindowPtr window,TInfoPtr info,void *data)
  79. {    
  80.     OSErr err;
  81.     DimmerModulePtr theDimmer;
  82.     
  83.     theDimmer = info->otherData[0];
  84.     if (!theDimmer)
  85.         return nil;
  86.     
  87.     SetPort(window);    
  88.     gMonitorsInfoPtr->monitorList[0].bounds = window->portRect;
  89.  
  90.     err = StopDimmer(theDimmer);
  91.     FreeDimmer(theDimmer);
  92.     
  93.     if (err!=noErr)
  94.         DebugStr(theDimmer->dimVars->errorMessage);
  95.  
  96.     return nil;
  97. }
  98.  
  99.  
  100. void *DimmerIdleWindow(WindowPtr window,TInfoPtr info,void *data)
  101. {
  102.     OSErr err;
  103.     DimmerModulePtr theDimmer;
  104.         
  105.     theDimmer = info->otherData[0];
  106.     if (!theDimmer)
  107.         return nil;
  108.     
  109.     SetPort(window);    
  110.     gMonitorsInfoPtr->monitorList[0].bounds = window->portRect;
  111.  
  112.     err = RunDimmer(theDimmer);
  113.     if (err==RestartMe)
  114.         InitDimmer(theDimmer);
  115.     if (err==ImDone)
  116.         err = StopDimmer(theDimmer);
  117.     if (err!=noErr)
  118.         DebugStr(theDimmer->dimVars->errorMessage);
  119.  
  120.     return nil;
  121. }
  122.  
  123.  
  124. void *DimmerUpdateWindow(WindowPtr window,TInfoPtr info,void *data)
  125. {    
  126.     DimmerModulePtr theDimmer;
  127.     FSSpec *dimFile;
  128.     OSErr err;
  129.     RgnHandle saveClip;
  130.     
  131.     SetPort(window);
  132.     gMonitorsInfoPtr->monitorList[0].bounds = window->portRect;
  133.  
  134.     saveClip = NewRgn();
  135.     GetClip(saveClip);
  136.     ClipRect(&window->portRect);
  137.     FillRect(&window->portRect,qd.black);
  138.     SetClip(saveClip);
  139.     DisposeRgn(saveClip);
  140.         
  141.     theDimmer = info->otherData[0];
  142.     
  143.     if (theDimmer) {
  144.         StopDimmer(theDimmer);
  145.         FreeDimmer(theDimmer);
  146.     }
  147.     
  148.     dimFile = &info->fileSpec;
  149.         
  150.     err = GetDimmer(dimFile,&theDimmer);
  151.     if (err!=noErr)
  152.         return nil;
  153.     
  154.     err = SelectModule(theDimmer);
  155.     if (err!=noErr)
  156.         return nil;
  157.     
  158.     err = InitDimmer(theDimmer);
  159.     if (err!=noErr)
  160.         return nil;
  161.     
  162.     err = StartDimmer(theDimmer);
  163.     if (err!=noErr)
  164.         return nil;
  165.     
  166.     info->otherData[0] = theDimmer;
  167.     
  168.     return nil;
  169. }
  170.  
  171.  
  172. void *DimmerLoadWindow(WindowPtr window,TInfoPtr info,void *data)
  173. {
  174.     DimmerModulePtr theDimmer;
  175.     OSErr err;
  176.     
  177.     return nil;
  178. }